package com.wolfword.crawler.server.service.impl;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import javax.annotation.Resource;

import org.json.JSONArray;
import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.wolfword.common.util.object.StringUtil;
import com.wolfword.crawler.server.dao.AnalyzedInfoListDao;
import com.wolfword.crawler.server.entity.AnalyzedInfoListEntity;
import com.wolfword.crawler.server.service.AnalyzedInfoListService;

@Service
public class AnalyzedInfoListServiceImpl implements AnalyzedInfoListService {
	
	@Autowired
	private AnalyzedInfoListDao analyzedInfoListDao;

	public AnalyzedInfoListDao getAnalyzedInfoListDao() {
		return analyzedInfoListDao;
	}

	@Resource
	public void setAnalyzedInfoListDao(AnalyzedInfoListDao analyzedInfoListDao) {
		this.analyzedInfoListDao = analyzedInfoListDao;
	}

	/**
	 * 插入数据
	 *
	 * @param entity
	 *            实体类
	 * @return 主键值
	 */
	@Override
	public long insert(AnalyzedInfoListEntity entity) {
		analyzedInfoListDao.insert(entity);
		return entity.getId();
	}

	/**
	 * 批量插入数据
	 *
	 * @param list
	 *            实体类
	 */
	@Override
	public void batchInsert(List<AnalyzedInfoListEntity> list) {
		analyzedInfoListDao.batchInsert(list);
	}

	/**
	 * 根据主键更新数据
	 *
	 * @param entity
	 *            新数据
	 */
	@Override
	public Integer updateByPrimary(AnalyzedInfoListEntity entity) {
		return analyzedInfoListDao.updateByPrimary(entity);
	}

	/**
	 * 根据主键获取数据
	 *
	 * @param entity
	 *            查询条件
	 * @return 查询结果
	 */
	@Override
	public AnalyzedInfoListEntity getByPrimary(AnalyzedInfoListEntity entity) {
		return analyzedInfoListDao.getByPrimary(entity);
	}

	/**
	 * 根据查询条件获取一条记录
	 *
	 * @param conditions
	 *            查询条件
	 * @return 查询结果
	 */
	@Override
	public AnalyzedInfoListEntity getOne(Map<String, Object> conditions) {
		return analyzedInfoListDao.getOne(conditions);
	}

	/**
	 * 根据查询条件查询
	 *
	 * @param conditions
	 *            查询条件
	 * @return 结果集
	 */
	@Override
	public List<AnalyzedInfoListEntity> queryList(Map<String, Object> conditions) {
		return analyzedInfoListDao.queryList(conditions);
	}

	/**
	 * 查询所有数据
	 *
	 * @return 结果集
	 */
	@Override
	public List<AnalyzedInfoListEntity> getAll() {
		return analyzedInfoListDao.getAll();
	}
	
	/**
	 * 批量添加网页解析信息
	 * @param jsonStr 解析信息列表json串
	 * @author ServerZhang
	 * @date 2018年1月11日
	 */
	@Override
	public void insertInfo(String jsonStr){
		List<AnalyzedInfoListEntity> list = new ArrayList<AnalyzedInfoListEntity>();
		JSONArray jsonArray = new JSONArray(jsonStr);
		int length = jsonArray.length();
		if (length < 1) {
			return;
		}
		for(int i=0; i<length; i++){//遍历得到一个对象
			Object object = jsonArray.get(i);
			if (null == object) {
				continue;
			}
			AnalyzedInfoListEntity entity = new AnalyzedInfoListEntity();
			
			JSONObject jsonObject = new JSONObject(object.toString());
			Iterator keys = jsonObject.keys();
			while(keys.hasNext()){//遍历对象中的键值
				Object keyObj = keys.next();
				if (null == keyObj) {
					continue;
				}
				String key = keyObj.toString();
				Object valueObj = jsonObject.get(key);
				if (StringUtil.isEmpty(valueObj)) {
					continue;
				}
				String value = valueObj.toString();
				switch (key) {
				case "type":
					entity.setType(Integer.parseInt(value));
					break;
				case "content":
					entity.setContent(value);
					break;
				case "taskId":
					entity.setTaskId(Long.parseLong(value));
					break;
				case "urlShort":
					entity.setUrlShort(value);
					break;
				default:
					break;
				}
			}
			list.add(entity);
		}
		//批量插入
		analyzedInfoListDao.batchInsert(list);
	}
}
